home *** CD-ROM | disk | FTP | other *** search
/ Super PC 31 / Super PC 31 (Shareware).iso / spc / inter / speakf / fuente / modem.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-10-02  |  2.0 KB  |  85 lines

  1. /*
  2.  
  3.                 Modem driver
  4.                 
  5. */
  6.  
  7. #include "netfone.h"
  8.  
  9. int modemHandle = -1;                    // Open modem handle
  10.  
  11. /*  OPENMODEM  --  Open the modem and initialise modes.  */
  12.  
  13. int openModem(HWND hwnd)
  14. {
  15.     int s;
  16.     DCB dcb;
  17.     COMSTAT cs;
  18.  
  19.     if (modemHandle != -1) {
  20.         closeModem(hwnd);
  21.     }
  22.     modemHandle = OpenComm(commport, modemInputQueue, modemOutputQueue);
  23.     if (modemHandle < 0) {
  24.         MsgBox(hwnd, MB_ICONSTOP | MB_OK, Format(46), modemHandle);
  25.         modemHandle = -1;
  26.         return FALSE;
  27.     }
  28.     
  29.     if (GetCommState(modemHandle, &dcb) < 0) {
  30.         MsgBox(hwnd, MB_ICONSTOP | MB_OK, rstring(IDS_T_MODEM_STATUS_ERR));
  31.         closeModem(hwnd);
  32.         return FALSE;
  33.     }
  34.     dcb.BaudRate = (UINT) atol(baudrate);
  35.     dcb.ByteSize = 8;
  36.     dcb.Parity = 0;
  37.     dcb.StopBits = 0;
  38.     dcb.fBinary = TRUE;
  39.     dcb.fParity = FALSE;
  40.     dcb.fOutxCtsFlow = FALSE;
  41.     dcb.fOutxDsrFlow = FALSE;
  42.     dcb.fOutX = FALSE;
  43.     dcb.fInX = FALSE;
  44.     dcb.fPeChar = FALSE;
  45.     dcb.fChEvt = FALSE;
  46.     dcb.fDtrflow = FALSE;
  47.     dcb.fRtsflow = FALSE;
  48.     
  49.     s = SetCommState(&dcb);
  50.     if (s < 0) {
  51.         MsgBox(hwnd, MB_ICONSTOP | MB_OK, Format(47), s);
  52.         closeModem(hwnd);
  53.         return FALSE;
  54.     }
  55.     
  56.     FlushComm(modemHandle, 0);
  57.     FlushComm(modemHandle, 1);
  58.     V GetCommError(modemHandle, &cs);    
  59.     SetCommEventMask(modemHandle, EV_RXCHAR | EV_TXEMPTY);
  60.     V GetCommEventMask(modemHandle, EV_RXCHAR | EV_TXEMPTY); 
  61.     EnableCommNotification(modemHandle, hwndMDIFrame, 150, 1);
  62.     EscapeCommFunction(modemHandle, SETDTR);
  63.     
  64.     //    Send the modem initialisation string
  65.     
  66.     V GetCommError(modemHandle, &cs);
  67.     WriteComm(modemHandle, modemInitString, strlen(modemInitString));
  68.     V GetCommError(modemHandle, &cs);
  69.     WriteComm(modemHandle, "\r", 1);
  70.     
  71.     return TRUE;
  72.  
  73. /*  CLOSEMODEM  --  Close the modem.  OK to call even if modem isn't open.  */
  74.  
  75. int closeModem(HWND hwnd)
  76. {
  77.     if (modemHandle != -1) {
  78.            EnableCommNotification(modemHandle, NULL, -1, -1);
  79.            EscapeCommFunction(modemHandle, CLRDTR);
  80.         CloseComm(modemHandle);
  81.     }
  82.     modemHandle = -1;
  83.     return TRUE;
  84. }